package org.dt.common.base;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public class EnumFinder<K, E extends Enum<E>> {
	protected Map<K, E> map = new HashMap<K, E>();

	public EnumFinder(Class<E> clazz, Function<E, K> keyGetter) {
		for (E enumValue : EnumSet.allOf(clazz)) {
			map.put(keyGetter.apply(enumValue), enumValue);
		}
	}

	public E find(K key, E defautValue) {
		E value = map.get(key);
		if (value == null) {
			value = defautValue;
		}
		return value;
	}
}